unit BusinessObjectsU;

interface

uses
  System.Classes, System.Generics.Collections;

type
  TBase = class abstract
  public
    constructor create; Virtual;
    destructor destroy; Virtual;
  end;

  TBaseBO = class(TBase)
  private
    FID: Integer;
    procedure SetID(const Value: Integer);
  public
    [Column('ID',TypeInfo(Integer))]
    property ID: Integer read FID write SetID;
  end;

  TPassword = class (TBaseBO)
  private
    Fpass: String;
    procedure Setpass(const Value: String);
  public
    [Column('PASSWORD',TypeInfo(String),50)]
    property pass: String read Fpass write Setpass;
  end;

  TDatiGenericiBasePersona = class(TBaseBO)
  private
    FNote: String;
    FCognome: String;
    FNome: String;
    procedure SetCognome(const Value: String);
    procedure SetNome(const Value: String);
    procedure SetNote(const Value: String);
  public
    [Column('NOME',TypeInfo(String),50)]
    property Nome: String read FNome write SetNome;
    [Column('COGNOME',TypeInfo(String),50)]
    property Cognome: String read FCognome write SetCognome;
    [Column('NOTE',TypeInfo(String),10000)]
    property Note: String read FNote write SetNote;
  end;

  TUtenteDati = class(TDatiGenericiBasePersona)
  private
    FMansione: String;
    FAttivo: Boolean;
    procedure SetAttivo(const Value: Boolean);
    procedure SetMansione(const Value: String);
  public
    [Column('MANSIONE',TypeInfo(String),50)]
    property Mansione: String read FMansione write SetMansione;
    [Column('ATTIVO',TypeInfo(Boolean))]
    property Attivo: Boolean read FAttivo write SetAttivo;
  end;

  TUtente = class(TUtenteDati)
  private
    FRuolo: String;
    FGiorni_Scadenza: Integer;
    FUser_Name: String;
    FData_Scadenza: Tdate;
    procedure SetData_Scadenza(const Value: Tdate);
    procedure SetGiorni_Scadenza(const Value: Integer);
    procedure SetRuolo(const Value: String);
    procedure SetUser_Name(const Value: String);
  public
    [Column('USER_NAME',TypeInfo(String),50)]
    property User_Name: String read FUser_Name write SetUser_Name;
    [Column('RUOLO',TypeInfo(String),20)]
    property Ruolo: String read FRuolo write SetRuolo;
    [Column('DATA_SCADENZA',TypeInfo(TDate),10)]
    property Data_Scadenza: Tdate read FData_Scadenza write SetData_Scadenza;
    [Column('GIORNI_SCADENZA',TypeInfo(Integer))]
    property Giorni_Scadenza: Integer read FGiorni_Scadenza write SetGiorni_Scadenza;
  end;

  TDatiGenericiPersona = class(TDatiGenericiBasePersona)
  private
    FProvincia: String;
    FCAP: String;
    FCitta: String;
    FCodice_Fiscale: String;
    FIndirizzo: String;
    procedure SetCAP(const Value: String);
    procedure SetCitta(const Value: String);
    procedure SetCodice_Fiscale(const Value: String);
    procedure SetIndirizzo(const Value: String);
    procedure SetProvincia(const Value: String);
  public
    [Column('INDIRIZZO',TypeInfo(String),50)]
    property Indirizzo: String read FIndirizzo write SetIndirizzo;
    [Column('CAP',TypeInfo(String),5)]
    property CAP: String read FCAP write SetCAP;
    [Column('CITTA',TypeInfo(String),50)]
    property Citta: String read FCitta write SetCitta;
    [Column('PROVINCIA',TypeInfo(String),2)]
    property Provincia: String read FProvincia write SetProvincia;
    [Column('CODICE_FISCALE',TypeInfo(String),16)]
    property Codice_Fiscale: String read FCodice_Fiscale write SetCodice_Fiscale;
  end;

  TParente = class(TDatiGenericiPersona)
  private
    FParentela: String;
    FID_Alunno: Integer;
    FPEC: String;
    FTelefono1: String;
    FE_Mail: String;
    FTelefono2: String;
    procedure SetID_Alunno(const Value: Integer);
    procedure SetParentela(const Value: String);
    procedure SetE_Mail(const Value: String);
    procedure SetPEC(const Value: String);
    procedure SetTelefono1(const Value: String);
    procedure SetTelefono2(const Value: String);
  public
    [Column('ID_ALUNNO',TypeInfo(Integer))]
    property ID_Alunno: Integer read FID_Alunno write SetID_Alunno;
    [Column('PARENTELA',TypeInfo(String),20)]
    property Parentela: String read FParentela write SetParentela;
    [Column('TELEFONO1',TypeInfo(String),20)]
    property Telefono1: String read FTelefono1 write SetTelefono1;
    [Column('TELEFONO2',TypeInfo(String),20)]
    property Telefono2: String read FTelefono2 write SetTelefono2;
    [Column('E_MAIL',TypeInfo(String),100)]
    property E_Mail: String read FE_Mail write SetE_Mail;
    [Column('PEC',TypeInfo(String),100)]
    property PEC: String read FPEC write SetPEC;
  end;

  TAlunno = class(TDatiGenericiPersona)
  private
    FNato_Il: TDate;
    FNato_Provincia: String;
    FNato_A: String;
    Fsezione: String;
    FFoto: TStream;
    Finquadramento: String;
    Fparenti: TObjectList<TParente>;
    procedure SetNato_A(const Value: String);
    procedure SetNato_Il(const Value: TDate);
    procedure SetNato_Provincia(const Value: String);
    procedure Setsezione(const Value: String);
    procedure SetFoto(const Value: TStream);
    procedure Setinquadramento(const Value: String);
    procedure Setparenti(const Value: TObjectList<TParente>);
  public
    constructor create; override;
    destructor destroy; override;
    [Column('SEZIONE',TypeInfo(String),20)]
    property sezione: String read Fsezione write Setsezione;
    [Column('NATO_A',TypeInfo(String),50)]
    property Nato_A: String read FNato_A write SetNato_A;
    [Column('NATO_PROVINCIA',TypeInfo(String),2)]
    property Nato_Provincia: String read FNato_Provincia write SetNato_Provincia;
    [Column('NATO_IL',TypeInfo(TDate))]
    property Nato_Il: TDate read FNato_Il write SetNato_Il;
    [Column('FOTO',TypeInfo(TStream))]
    property Foto: TStream read FFoto write SetFoto;
    [Column('INQUADRAMENTO',TypeInfo(String),20)]
    property inquadramento: String read Finquadramento write Setinquadramento;
    [Column('PARENTI',TypeInfo(TObjectList))]
    property parenti: TObjectList<TParente> read Fparenti write Setparenti;
  end;

  // Visualizzazioni

  TAlunnoView = class(TBaseBO)
  private
    FAttivo: Boolean;
    Fsezione: String;
    FNome: String;
    Finquadramento: String;
    FTelefoni: String;
    procedure SetAttivo(const Value: Boolean);
    procedure SetNome(const Value: String);
    procedure Setsezione(const Value: String);
    procedure Setinquadramento(const Value: String);
    procedure SetTelefoni(const Value: String);
  public
    [Column('NOME',TypeInfo(String),100)]
    property Nome: String read FNome write SetNome;
    [Column('SEZIONE',TypeInfo(String),20)]
    property sezione: String read Fsezione write Setsezione;
    [Column('ATTIVO',TypeInfo(Boolean))]
    property Attivo: Boolean read FAttivo write SetAttivo;
    [Column('TELEFONI',TypeInfo(String),200)]
    property Telefoni: String read FTelefoni write SetTelefoni;
    [Column('INQUADRAMENTO',TypeInfo(String),20)]
    property inquadramento: String read Finquadramento write Setinquadramento;
  end;


implementation

{ TBase }

constructor TBase.create;
begin
  inherited;
end;

destructor TBase.destroy;
begin
  inherited;
end;

{ TBaseBO }

procedure TBaseBO.SetID(const Value: Integer);
begin
  FID := Value;
end;

{ TPassword }

procedure TPassword.Setpass(const Value: String);
begin
  Fpass := Value;
end;

{ TUtenteDati }

procedure TUtenteDati.SetAttivo(const Value: Boolean);
begin
  FAttivo := Value;
end;

procedure TUtenteDati.SetMansione(const Value: String);
begin
  FMansione := Value;
end;

{ TUtente }

procedure TUtente.SetData_Scadenza(const Value: Tdate);
begin
  FData_Scadenza := Value;
end;

procedure TUtente.SetGiorni_Scadenza(const Value: Integer);
begin
  FGiorni_Scadenza := Value;
end;

procedure TUtente.SetRuolo(const Value: String);
begin
  FRuolo := Value;
end;

procedure TUtente.SetUser_Name(const Value: String);
begin
  FUser_Name := Value;
end;

{ TAlunno }

constructor TAlunno.create;
begin
  inherited;
  FFoto := TMemoryStream.Create;
end;

destructor TAlunno.destroy;
begin
  FFoto.Free;
  inherited;
end;

procedure TAlunno.SetFoto(const Value: TStream);
begin
  FFoto := Value;
end;

procedure TAlunno.Setinquadramento(const Value: String);
begin
  Finquadramento := Value;
end;

procedure TAlunno.SetNato_A(const Value: String);
begin
  FNato_A := Value;
end;

procedure TAlunno.SetNato_Il(const Value: TDate);
begin
  FNato_Il := Value;
end;

procedure TAlunno.SetNato_Provincia(const Value: String);
begin
  FNato_Provincia := Value;
end;


procedure TAlunno.Setparenti(const Value: TObjectList<TParente>);
begin
  Fparenti := Value;
end;

procedure TAlunno.Setsezione(const Value: String);
begin
  Fsezione := Value;
end;

{ TParente }


procedure TParente.SetE_Mail(const Value: String);
begin
  FE_Mail := Value;
end;

procedure TParente.SetID_Alunno(const Value: Integer);
begin
  FID_Alunno := Value;
end;

procedure TParente.SetParentela(const Value: String);
begin
  FParentela := Value;
end;

procedure TParente.SetPEC(const Value: String);
begin
  FPEC := Value;
end;

procedure TParente.SetTelefono1(const Value: String);
begin
  FTelefono1 := Value;
end;

procedure TParente.SetTelefono2(const Value: String);
begin
  FTelefono2 := Value;
end;

{ TDatiGenericiBasePersona }

procedure TDatiGenericiBasePersona.SetCognome(const Value: String);
begin
  FCognome := Value;
end;

procedure TDatiGenericiBasePersona.SetNome(const Value: String);
begin
  FNome := Value;
end;

procedure TDatiGenericiBasePersona.SetNote(const Value: String);
begin
  FNote := Value;
end;

{ TDatiGenericiPersona }

procedure TDatiGenericiPersona.SetCAP(const Value: String);
begin
  FCAP := Value;
end;

procedure TDatiGenericiPersona.SetCitta(const Value: String);
begin
  FCitta := Value;
end;

procedure TDatiGenericiPersona.SetCodice_Fiscale(const Value: String);
begin
  FCodice_Fiscale := Value;
end;

procedure TDatiGenericiPersona.SetIndirizzo(const Value: String);
begin
  FIndirizzo := Value;
end;

procedure TDatiGenericiPersona.SetProvincia(const Value: String);
begin
  FProvincia := Value;
end;


{ TAlunnoView }

procedure TAlunnoView.SetAttivo(const Value: Boolean);
begin
  FAttivo := Value;
end;

procedure TAlunnoView.Setinquadramento(const Value: String);
begin
  Finquadramento := Value;
end;

procedure TAlunnoView.SetNome(const Value: String);
begin
  FNome := Value;
end;

procedure TAlunnoView.Setsezione(const Value: String);
begin
  Fsezione := Value;
end;

procedure TAlunnoView.SetTelefoni(const Value: String);
begin
  FTelefoni := Value;
end;

end.
